Example Usage or When to Make New IFM Files

So, to what end can this knowledge of the IFM file format be applied ?

  1. Assume that you need to disable all ligature printing, you are printing at a very small font size, and ligatures do not print out legibly. To do this, you should copy the dvnc.ifm file to sdvnc.ifm, and remove all ligature definitions from sdvnc.ifm. Ligature definitions are those which contain two consonants separated by a dash: examples: CCS tta-tta tmplA ; CC tta-tta-implicit 1 ; PCC 147 0 0 ; All such ligature definitions can be deleted from sdvnc.ifm. And then, in your input file that contains the transliterated text, add the command:

    \indianifm=sdvnc.ifm

    (See the user manual on itrans for more information on the indianifm keyword.)

    Now, no ligatures are available, and nothing needs to be done to the input text at all to suppress the ligatures. Instead of the ligatures, the half-forms of the consonants will be used wherever required.

  2. Another use would be if you do not like the spacing of certain characters when they are composed to form consonant forms. Well, as seen in the previous example, it is quite simple to copy the IFM file into a new one, change the deltas (the numbers) as required, and use the new IFM in the input text.

  3. By changing the character definitions in the IFM file, one can produce different printed forms for the character. For example, to print the normal form of ii in devanagari prints out as: ii . Now, what if you need to make it print out as: a‡ ? This is easily done, just comment out the old definition of the ii character (it is called ii in the ifm file, and make it read:

    Comment -I- CC ii 2 ; PCC 97 0 0 ; PCC 132 0 0 ;

    Now, all instances of ii in the input text will print out as: a‡?

    This method can be used to change any character form you need, as long as the constituent parts of the new character are available in the font.

  4. You have received a new font, either you developed it yourself, or got it elsewhere, and you would like to use it through the itrans mechanism. This involves two steps. First, you need to map the vowels and consonants available through itrans (see figures 1 and 2) to the font characters. Second, you create a IFM file for the font. The first step is the biggest hurdle, especially if you feel that you need to add new consonant names to ilex.l. (Of course, that implies lots of source code changes: now iyacc.y will have to be modified to accept the new token, imap.h will have to edited to add the codename for the font, and font.c will have to be edited to add the new codename into a static data structure!) If that happens, send me e-mail, maybe I will permanently add the name to ilex.l, but I hope that current set of names accepted by ilex.l will suffice. If they do, then no source code changes are necessary, just need to create the IFM file and you are in business.

    If you wish, you could send me the IFM file you create, and the font (if it is in public domain, otherwise the IFM file only will suffice),